Digital video compression is an important technology in video communications, broadcasting, and storage. MPEG video coding standards have been successfully used to reduce the transmission bandwidth and storage space requirements in many applications, such as digital TV broadcast through satellite and cable, Digital Video Disk (DVD), Video on-Demand and video streaming over the Internet, etc. However, emerging applications and new services place increasing demands on compression techniques. For example, live news and sports events are transmitted in real-time to subscribers using MPEG-2 video coding standard (ISO/IEC 13818-2) at a constant bit rate (CBR) in the range of 0.6 to 2 Mbits/second for standard definition content. It is very challenging for conventional MPEG encoders available on the commercial market to produce acceptable picture quality at such bit rates.
Conventional real-time video encoders often employ a coding strategy that uses information retained in coding only the previously received video frames to encode a current frame. However, prediction and estimation based on past frames generally will not correctly describe the current frame. Such encoders are not able to determine and apply the best coding strategy to encode incoming video frames because they lack information about future frames. As a result real-time encoders generally do not achieve compressed video with as high quality encoding characteristics (e.g., less distortion in an encoded image while using fewer bits of information) as off-line encoders.
In comparison to real-time encoders, off-line (i.e., non-real-time) video encoders can provide compressed video with higher quality encoding characteristics by using complex algorithms that require higher computational overhead. Such algorithms can perform non-casual rate control and may exhaustively perform rate/distortion optimization to determine the number of bits required to reduce artifacts that arise from the compression process. For example, off-line encoders can employ techniques such as multipass encoding. With multipass encoding, a video sequence is encoded several times and each encoding pass uses the results of the preceding pass to adjust coding parameters to optimize, for example, average bit rate and/or decoder buffer fullness. Overall, the multipass encoding process is a trial and error process: select initial coding parameters, code the video sequence, examine the results to determine if performance requirements are met and recode as necessary using adjusted coding parameters for each subsequent iteration. For long sequences of digital video, however, coding the entire video sequence several times is inefficient and greatly increases the time required to generate an efficiently compressed sequence and thus multipass encoding, like other complex algorithms that achieve higher quality, are often reserved for off-line encoding.